
                     Alicia a través del espejo
            ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
               Una aventura de texto para Spectrum 128K
            ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━


Una aventura de texto en BASIC, "secuela espiritual" de la famosa Alicia
de Microhobby :)

He intentado que la aventura sea accesible a nuevos jugadores dentro de las
limitaciones del BASIC y del Spectrum en general, y hacer una aventura un poco
más moderna que la Alicia original (con EXAMINAR/EX, SALIDAS/X, repetir la orden
anterior con cursor arriba, etc.)

El manual de instrucciones no debería ser necesario para jugar, pero contiene
algunos detalles importantes, como los comando PISTA y AYUDA.

            ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

Este programa está escrito íntegramente en Sinclair BASIC puro, y debería
funcionar en cualquier modelo de Spectrum de 128K, incluyendo el 128K original,
el modelo +2, y los +2A y +3.

No se utiliza ninguna rutina de código máquina de la ROM, aunque se usa el truco
de DEF FN para copiar los atributos de los gráficos a la zona de pantalla.

Se hace uso del disco RAM de los 128K para almacenar los gráficos del juego, que
se cargan desde cinta antes de empezar. Estos gráficos se guardan en formato
SCREEN$, con la salvedad de que sólo se usa el tercio superior de pantalla.

El código fuente está en un fichero .BAS, y debe utilizarse el programa BAS2TAP
de Martijn van der Heide para tokenizarlo y cargarlo en un Spectrum. Pero, ¡ojo!
No sirve el BAS2TAP original. Por comodidad, utilizo un bas2tap hackeado con
algunas diferencias, que listo a continuación:

- Soporte de #define para añadir macros al .BAS. Estas macros se sustituyen
  en el código fuente. Cosas como códigos de objeto tienen un #define al
  principio del código, y en el .tap se guarda simplemente el número.

- Codificación óptima de números. Los números se almacenan como ASCII 0
  seguidos del valor real en los cinco bytes habituales, para que el programa
  ocupe un pelín menos de memoria. También se soporta codificar automáticamente
  los números por su respectivo VAL o code, feature que se activa o desactiva en
  diversas secciones del código para que el juego ocupe menos memoria.

- Soporte de línea 0 y otros números "inválidos".

El programa no se puede editar directamente en el BASIC del Spectrum por el uso
de estas features, así como el uso habitual de caracteres de control {AT} y
{TAB}, pero sigue siendo 100% BASIC.

Adjunto el bas2tap.c modificado, el código fuente del programa, del cargador y
de un programita que he metido al principio de la cinta para comprobar los 128K.
El resto de bloques de carga que hay en la cinta son todos gráficos, aparte de
los UDG y el juego de caracteres del juego.



José Luis Cebrián